package com.fowo.api.sys.cns;

import java.util.List;

/**
 * 变更通知侦听器接口
 * @author yl_ls
 */
public interface ChangeNoticeListener {

    /**
     * 通知数据变更
     * @param noticeData 变更的数据
     */
    void notice(ChangeNoticeData noticeData);

    /**
     * 为 {@link ChangeNotice} 提供自定义变更键获取
     * @author yl_ls
     */
    @FunctionalInterface
    interface ChangeNoticeKeyAccessor {

        /**
         * 获取 {@link ChangeNotice} 所在方法变更的主键列表
         * @param args 方法的输入参数
         * @param returnValue 方法的返回值
         * @return 变更的主键列表，返回空时忽略
         */
        List<Long> getChangeKeys(Object[] args, Object returnValue);
    }
}
